﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Administracion;
using System.Data;
using Generico.Coneccion;
using System.Collections.Specialized;

namespace CienciaYDeporte.Administracion
{
    public partial class Cursos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
            
            if (!this.IsPostBack)
            {

                var cn = new ClsConeccion();
                cn.Abrir();

                var rd = cn.EjecutarSqlDataReader("Select idCurso, Descripcion + ' / ' + convert(varchar, Day(FechaInicio)) + '-' + convert(varchar, Month(FechaInicio)) + '-' + convert(varchar, Year(FechaInicio)) as FechaIni from Cursos order by idCurso");

                this.ddlCursos.DataSource = rd;
                ddlCursos.DataTextField = "FechaIni";
                ddlCursos.DataValueField = "idCurso";

                ListItem dr0 = new ListItem();
                
                ddlCursos.DataBind();

                dr0.Value = "0";
                dr0.Text = "Crear Nuevo Curso";
                ddlCursos.Items.Add(dr0);

                ddlCursos.SelectedValue = "0";

                cn.Cerrar();

            }
        }

        protected void Guardar_Curso(object sender, EventArgs e)
        {
            try
            {
                if (ValidarCampos())
                {

                    if (!ValidarExistenciaAlias())
                    {

                        var cn = new ClsConeccion();
                        cn.Abrir();

                        if (ddlCursos.SelectedValue == "0")                           // NUEVO CURSO
                        {
                            cn.AgregarParametros("Descripcion", txtDescripcionCorta.Text);

                            if (chkCursoPago.Checked == true)
                                cn.AgregarParametros("Importe", Convert.ToDecimal(txtImporte.Text));
                            else
                                cn.AgregarParametros("Importe", "");

                            cn.AgregarParametros("alias", txtAlias.Text.Trim());
                            cn.AgregarParametros("FechaInicio", Convert.ToDateTime(txtFechaInicioCurso.Text));
                            cn.AgregarParametros("Lugar", txtLugar.Text);
                            cn.AgregarParametros("Fecha", txtFecha.Text);
                            cn.AgregarParametros("CantJornadas", txtCantJornadas.Text);
                            cn.AgregarParametros("FechaHoraParaEmail", txtFechaHoraParaMail.Text);
                            cn.AgregarParametros("Profesor", txtProfesor.Text);
                            cn.AgregarParametros("CantHoras", txtCantHoras.Text);
                            cn.AgregarParametros("DescripcionLarga", txtDescripcionLarga.Text);
                            cn.AgregarParametros("Contenido", txtContenido.Text);
                            cn.AgregarParametros("EsPago", chkCursoPago.Checked);
                            cn.AgregarParametros("TieneFlyer", chkTieneFlyer.Checked);
                            cn.AgregarParametros("Capacidad", Convert.ToInt32(txtCapacidad.Text));
                            cn.AgregarParametros("EstaLleno", chkEstalleno.Checked);
                            cn.AgregarParametros("CursoEvento", ddlCursoEvento.SelectedValue);
                            cn.AgregarParametros("WebEvento", txtWebEvento.Text);
                            cn.AgregarParametros("TextoTwitter", txtTwitter.Text.Trim());
                            cn.AgregarParametros("Hashtag", txtHashtag.Text.Trim());


                            var rd = cn.EjecutarSpDataReader("sp_ADM_NewCurso");

                        }
                        else                                                     // MODIFICAR CURSO
                        {

                            cn.AgregarParametros("idCurso", ddlCursos.SelectedValue);
                            cn.AgregarParametros("Descripcion", txtDescripcionCorta.Text);

                            if (chkCursoPago.Checked == true)
                                cn.AgregarParametros("Importe", Convert.ToDecimal(txtImporte.Text));
                            else
                                cn.AgregarParametros("Importe", "");

                            cn.AgregarParametros("FechaInicio", Convert.ToDateTime(txtFechaInicioCurso.Text));
                            cn.AgregarParametros("Lugar", txtLugar.Text);
                            cn.AgregarParametros("Fecha", txtFecha.Text);
                            cn.AgregarParametros("CantJornadas", txtCantJornadas.Text);
                            cn.AgregarParametros("FechaHoraParaEmail", txtFechaHoraParaMail.Text);
                            cn.AgregarParametros("Profesor", txtProfesor.Text);
                            cn.AgregarParametros("CantHoras", txtCantHoras.Text);
                            cn.AgregarParametros("DescripcionLarga", txtDescripcionLarga.Text);
                            cn.AgregarParametros("Contenido", txtContenido.Text);
                            cn.AgregarParametros("EsPago", chkCursoPago.Checked);
                            cn.AgregarParametros("TieneFlyer", chkTieneFlyer.Checked);
                            cn.AgregarParametros("Capacidad", Convert.ToInt32(txtCapacidad.Text));
                            cn.AgregarParametros("EstaLleno", chkEstalleno.Checked);
                            cn.AgregarParametros("CursoEvento", ddlCursoEvento.SelectedValue);
                            cn.AgregarParametros("WebEvento", txtWebEvento.Text);
                            cn.AgregarParametros("TextoTwitter", txtTwitter.Text.Trim());
                            cn.AgregarParametros("Hashtag", txtHashtag.Text.Trim());

                            var rd = cn.EjecutarSpDataReader("sp_ADM_UpdateCurso");

                        }

                        cn.Cerrar();
                        Response.Redirect("~/Administracion/Cursos.aspx");


                    }
                    else
                        Response.Write("<script> alert('El Alias de este curso ya existe. Elija otro');</script>");

                }
                else
                    Response.Write("<script> alert('Todos los campos son obligatorios');</script>");

            }
            catch (Exception ex)
            {
                Response.Write("<script> alert('Hay un error en los datos ingresados. El curso no se ha guardado');</script>");
            }
        }


        protected void Eliminar_Curso(object sender, EventArgs e)
        {

            var cn = new ClsConeccion();
            cn.Abrir();

            cn.AgregarParametros("idCurso", ddlCursos.SelectedValue);

            var rd = cn.EjecutarSpDataReader("sp_ADM_DeleteCurso");

            cn.Cerrar();

            Response.Redirect("~/Administracion/Cursos.aspx");

        }



        protected void ddlCursos_SelectedIndexChanged(object sender, EventArgs e)
        {



            if(ddlCursos.SelectedValue != "0")
            {

                LimpiarCampos();

                var cn = new ClsConeccion();
                cn.Abrir();

                cn.AgregarParametros("idCurso", ddlCursos.SelectedValue);

                var rd = cn.EjecutarSpDataReader("sp_ADM_GetCurso");


                while (rd.Read())
                {

                    if (rd["DescripcionLarga"] != DBNull.Value)
                        txtDescripcionLarga.Text = rd["DescripcionLarga"].ToString();

                    if (rd["Contenido"] != DBNull.Value)
                        txtContenido.Text = rd["Contenido"].ToString();

                    if (rd["Descripcion"] != DBNull.Value)
                        txtDescripcionCorta.Text = rd["Descripcion"].ToString();

                    if (rd["alias"] != DBNull.Value)
                    {
                        txtAlias.Text = rd["alias"].ToString();
                        txtAlias.Enabled = false;
                    }

                    if (rd["Profesor"] != DBNull.Value)
                        txtProfesor.Text = rd["Profesor"].ToString();

                    if (rd["Lugar"] != DBNull.Value)
                        txtLugar.Text = rd["Lugar"].ToString();

                    if (rd["CantHoras"] != DBNull.Value)
                        txtCantHoras.Text = rd["CantHoras"].ToString();

                    if (rd["CantJornadas"] != DBNull.Value)
                        txtCantJornadas.Text = rd["CantJornadas"].ToString();

                    if (rd["EsPago"] != DBNull.Value)
                    {
                        chkCursoPago.Checked = Convert.ToBoolean(rd["EsPago"]);
                        txtImporte.Enabled = Convert.ToBoolean(rd["EsPago"]);
                    }
                    else
                    {
                        chkCursoPago.Checked = true;
                        txtImporte.Enabled = true;
                    }

                    if (rd["TieneFlyer"] != DBNull.Value)
                        chkTieneFlyer.Checked = Convert.ToBoolean(rd["TieneFlyer"]);

                    if (rd["Importe"] != DBNull.Value)
                        txtImporte.Text = Math.Round(Convert.ToDecimal(rd["Importe"]), 2).ToString();

                    if (rd["Fecha"] != DBNull.Value)
                        txtFecha.Text = rd["Fecha"].ToString();

                    if (rd["FechaInicio"] != DBNull.Value)
                        txtFechaInicioCurso.Text = Convert.ToDateTime(rd["FechaInicio"]).ToShortDateString();

                    if (rd["FechaHoraParaEmail"] != DBNull.Value)
                        txtFechaHoraParaMail.Text = rd["FechaHoraParaEmail"].ToString();

                    if (rd["Capacidad"] != DBNull.Value)
                        txtCapacidad.Text = rd["Capacidad"].ToString();

                    if (rd["EstaLleno"] != DBNull.Value)
                        chkEstalleno.Checked = Convert.ToBoolean(rd["EstaLleno"]);

                    if (rd["CursoEvento"] != DBNull.Value)
                        ddlCursoEvento.SelectedValue = rd["CursoEvento"].ToString();

                    if (rd["WebEvento"] != DBNull.Value)
                        txtWebEvento.Text = rd["WebEvento"].ToString();

                    if (rd["TextoTwitter"] != DBNull.Value)
                        txtTwitter.Text = rd["TextoTwitter"].ToString();

                    if (rd["Hashtag"] != DBNull.Value)
                        txtHashtag.Text = rd["Hashtag"].ToString();

                }
                rd.Close();
                cn.Cerrar();

                btnEliminar.Visible = true;
            }
            else
            {
                LimpiarCampos();
            
            }


        }

        private void LimpiarCampos()
        {

            txtDescripcionLarga.Text = "";
            txtContenido.Text = "";
            txtDescripcionCorta.Text = "";
            txtAlias.Text = "";
            txtProfesor.Text = "";
            txtLugar.Text = "";
            txtCantHoras.Text = "";
            txtCantJornadas.Text = "";
            chkCursoPago.Checked = true;
            txtImporte.Text = "";
            chkTieneFlyer.Checked = false;
            txtImporte.Enabled = true;
            txtFecha.Text = "";
            txtFechaInicioCurso.Text = "";
            txtFechaHoraParaMail.Text = "";
            btnEliminar.Visible = false;
            txtAlias.Enabled = true;
            txtCapacidad.Text = "20";
            chkEstalleno.Checked = false;
            txtWebEvento.Text = "";
            txtTwitter.Text = "";
            txtHashtag.Text = "";
        }

        private bool ValidarCampos()
        {

            if(txtDescripcionLarga.Text == "")
                return false;

            if(txtContenido.Text == "")
                return false;

            if(txtDescripcionCorta.Text == "")
                return false;

            if (txtAlias.Text.Trim() == "")
                return false;

            if(txtProfesor.Text == "")
                return false;

            if(txtLugar.Text == "")
                return false;

            if(txtCantHoras.Text == "")
                return false;
            else
            {
                int i;
                bool success = int.TryParse(txtCantHoras.Text, out i);
                if (!success)
                    return false;
            }

            if(txtCantJornadas.Text == "")
                return false;
            else
            {
                int i;
                bool success = int.TryParse(txtCantJornadas.Text, out i);
                if (!success)
                    return false;
            }

            if (chkCursoPago.Checked == true)
            {
                if (txtImporte.Text == "")
                    return false;
            }

            if(txtFecha.Text == "")
                return false;

            if(txtFechaInicioCurso.Text == "")
                return false;

            if(txtFechaHoraParaMail.Text == "")
                return false;

            if (txtCapacidad.Text == "")
                return false;
            else
            {
                int i;
                bool success = int.TryParse(txtCapacidad.Text, out i);
                if (!success)
                    return false;
            }

            return true;
        
        }


        private bool ValidarExistenciaAlias()
        {

            var cn = new ClsConeccion();
            cn.Abrir();

            var rta = new bool();

            if (ddlCursos.SelectedValue == "0")
            {
                cn.AgregarParametros("alias", txtAlias.Text.Trim());

                var rd = cn.EjecutarSpDataReader("sp_ADM_ValidateAliasCurso");

                while (rd.Read())
                {

                    if (rd["CantAlias"] != DBNull.Value)
                    {

                        if (Convert.ToInt32(rd["CantAlias"]) > 0)
                            rta = true;
                        else
                            rta = false;

                    }
                    else
                        rta = false;
                }


            }
            else
            {

                cn.AgregarParametros("idCurso", ddlCursos.SelectedValue);
                cn.AgregarParametros("alias", txtAlias.Text.Trim());

                var rd = cn.EjecutarSpDataReader("sp_ADM_ValidateAliasCursoExistente");

                while (rd.Read())
                {

                    if (rd["CantAlias"] != DBNull.Value)
                    {

                        if (Convert.ToInt32(rd["CantAlias"]) > 0)
                            rta = true;
                        else
                            rta = false;

                    }
                    else
                        rta = false;
                }            
            
            }

            cn.Cerrar();

            return rta;        
        
        }

        protected void chkCursoPago_CheckedChanged(object sender, EventArgs e)
        {
            txtImporte.Text = "";

            if (chkCursoPago.Checked)
                txtImporte.Enabled = true;
            else
                txtImporte.Enabled = false;

        }
    }
}
